﻿using System;
namespace Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik {
    
    
    [global::Xtee.Core.Attributes.XmlTypeAttribute(Name="MenetlusPost", Namespace="http://producers.etoimik.xtee.riik.ee/producer/etoimik", Target=typeof(MenetlusPost))]
    public class MenetlusPostSerializer : global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.YmbrikSerializer {
        
        public MenetlusPostSerializer(IMenetlusPost clazz) : 
                base(clazz) {
        }
        
        protected new IMenetlusPost clazz {
            get {
                return ((IMenetlusPost)(base.clazz));
            }
        }
        
        public override void WriteXml(global::Xtee.Core.IXteeXmlWriter Writer) {
            base.WriteXml(Writer);
            if (clazz.MeieAsjaajamisNR!=null) {
                Writer.WriteStartElement("MeieAsjaajamisNR");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.MeieAsjaajamisNR))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.EsitamiseViisKL!=null) {
                Writer.WriteStartElement("EsitamiseViisKL");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "long");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdLong(((long)(clazz.EsitamiseViisKL))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.JargnevMenetlus!=null) {
                Writer.WriteStartElement("JargnevMenetlus");
                global::Xtee.Core.SerializationMetadata metaJargnevMenetlus = this.GetMetaData(clazz.JargnevMenetlus);
                Writer.WriteTypeAttribute(metaJargnevMenetlus.TypeQualifiedName.Namespace, metaJargnevMenetlus.TypeQualifiedName.Name);
                metaJargnevMenetlus.NewSerializer(clazz.JargnevMenetlus).WriteXml(Writer);
                Writer.WriteEndElement();
            }
            if (clazz.TeieAsjaajamisNR!=null) {
                Writer.WriteStartElement("TeieAsjaajamisNR");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "string");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdString(((string)(clazz.TeieAsjaajamisNR))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.Adressaat!=null) {
                Writer.WriteStartElement("Adressaat");
                global::Xtee.Core.SerializationMetadata metaAdressaat = this.GetMetaData(clazz.Adressaat);
                Writer.WriteTypeAttribute(metaAdressaat.TypeQualifiedName.Namespace, metaAdressaat.TypeQualifiedName.Name);
                metaAdressaat.NewSerializer(clazz.Adressaat).WriteXml(Writer);
                Writer.WriteEndElement();
            }
            if (clazz.NahtavuseKP!=null) {
                Writer.WriteStartElement("NahtavuseKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.NahtavuseKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.VaatamisOiguseAndmine!=null) {
                Writer.WriteStartElement("VaatamisOiguseAndmine");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "boolean");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdBoolean(((bool)(clazz.VaatamisOiguseAndmine))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.Kattetoimetamised!=null) {
                Writer.WriteStartElement("Kattetoimetamised");
                Writer.WriteTypeAttribute("http://schemas.xmlsoap.org/soap/encoding/", "Array");
                Writer.WriteArrayTypeAttribute("Kattetoimetamine", "http://producers.etoimik.xtee.riik.ee/producer/etoimik", clazz.Kattetoimetamised.Count);
                for (int x = 0; ((clazz.Kattetoimetamised != null) 
                            && (x < clazz.Kattetoimetamised.Count)); x = (x + 1)) {
                    if (clazz.Kattetoimetamised[x]!=null) {
                        Writer.WriteStartElement("item");
                        global::Xtee.Core.SerializationMetadata metaKattetoimetamised = this.GetMetaData(clazz.Kattetoimetamised[x]);
                        Writer.WriteTypeAttribute(metaKattetoimetamised.TypeQualifiedName.Namespace, metaKattetoimetamised.TypeQualifiedName.Name);
                        metaKattetoimetamised.NewSerializer(clazz.Kattetoimetamised[x]).WriteXml(Writer);
                        Writer.WriteEndElement();
                    }
                }
                Writer.WriteEndElement();
            }
            if (clazz.NouabKattesaamist!=null) {
                Writer.WriteStartElement("NouabKattesaamist");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "boolean");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdBoolean(((bool)(clazz.NouabKattesaamist))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.OnKattesaadud!=null) {
                Writer.WriteStartElement("OnKattesaadud");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "boolean");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdBoolean(((bool)(clazz.OnKattesaadud))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.VastusnoudeKP!=null) {
                Writer.WriteStartElement("VastusnoudeKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.VastusnoudeKP))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.OodatakseVastust!=null) {
                Writer.WriteStartElement("OodatakseVastust");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "boolean");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdBoolean(((bool)(clazz.OodatakseVastust))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.Edasikaevatav!=null) {
                Writer.WriteStartElement("Edasikaevatav");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "boolean");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdBoolean(((bool)(clazz.Edasikaevatav))).ToString());
                Writer.WriteEndElement();
            }
            if (clazz.EdasikaebamiseKP!=null) {
                Writer.WriteStartElement("EdasikaebamiseKP");
                Writer.WriteTypeAttribute("http://www.w3.org/2001/XMLSchema", "dateTime");
                Writer.WriteString(new global::Xtee.Core.Schema.XsdDateTime(((System.DateTime)(clazz.EdasikaebamiseKP))).ToString());
                Writer.WriteEndElement();
            }
        }
        
        public override void ReadXml(global::Xtee.Core.IXteeXmlReader Reader) {
            base.ReadXml(Reader);
            if (Reader.LocalName=="MeieAsjaajamisNR") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.MeieAsjaajamisNR = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("MeieAsjaajamisNR")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="EsitamiseViisKL") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.EsitamiseViisKL = new global::Xtee.Core.Schema.XsdLong(Reader.ReadElementString("EsitamiseViisKL")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="JargnevMenetlus") {
                if ((Reader.IsElementNil() == false)) {
                    global::Xtee.Core.SerializationMetadata metaJargnevMenetlus = this.GetMetaData<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IMenetlus>(Reader, "Menetlus", "http://producers.etoimik.xtee.riik.ee/producer/etoimik");
                    clazz.JargnevMenetlus = metaJargnevMenetlus.NewEntity<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IMenetlus>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("JargnevMenetlus");
                        metaJargnevMenetlus.NewSerializer(clazz.JargnevMenetlus).ReadXml(Reader);
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="TeieAsjaajamisNR") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.TeieAsjaajamisNR = new global::Xtee.Core.Schema.XsdString(Reader.ReadElementString("TeieAsjaajamisNR")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="Adressaat") {
                if ((Reader.IsElementNil() == false)) {
                    global::Xtee.Core.SerializationMetadata metaAdressaat = this.GetMetaData<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IIsik>(Reader, "Isik", "http://producers.etoimik.xtee.riik.ee/producer/etoimik");
                    clazz.Adressaat = metaAdressaat.NewEntity<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IIsik>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("Adressaat");
                        metaAdressaat.NewSerializer(clazz.Adressaat).ReadXml(Reader);
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="NahtavuseKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.NahtavuseKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("NahtavuseKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="VaatamisOiguseAndmine") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.VaatamisOiguseAndmine = new global::Xtee.Core.Schema.XsdBoolean(Reader.ReadElementString("VaatamisOiguseAndmine")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="Kattetoimetamised") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.Kattetoimetamised = new System.Collections.Generic.List<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKattetoimetamine>();
                    if ((Reader.IsEmptyElement == false)) {
                        Reader.ReadStartElement("Kattetoimetamised");
                        for (; ((Reader.NodeType != System.Xml.XmlNodeType.EndElement) 
                                    && (Reader.LocalName == "item")); ) {
                            if ((Reader.IsElementNil() == false)) {
                                global::Xtee.Core.SerializationMetadata metaKattetoimetamised = this.GetMetaData<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKattetoimetamine>(Reader, "Kattetoimetamine", "http://producers.etoimik.xtee.riik.ee/producer/etoimik");
                                global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKattetoimetamine item = metaKattetoimetamised.NewEntity<global::Producers.Etoimik.Xtee.Riik.Ee.Producer.Etoimik.IKattetoimetamine>();
                                clazz.Kattetoimetamised.Add(item);
                                if ((Reader.IsEmptyElement == false)) {
                                    Reader.ReadStartElement("item");
                                    metaKattetoimetamised.NewSerializer(item).ReadXml(Reader);
                                    Reader.ReadEndElement();
                                }
                                else {
                                    Reader.Skip();
                                }
                            }
                            else {
                                clazz.Kattetoimetamised.Add(null);
                                Reader.Skip();
                            }
                        }
                        Reader.ReadEndElement();
                    }
                    else {
                        Reader.Skip();
                    }
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="NouabKattesaamist") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.NouabKattesaamist = new global::Xtee.Core.Schema.XsdBoolean(Reader.ReadElementString("NouabKattesaamist")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="OnKattesaadud") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.OnKattesaadud = new global::Xtee.Core.Schema.XsdBoolean(Reader.ReadElementString("OnKattesaadud")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="VastusnoudeKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.VastusnoudeKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("VastusnoudeKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="OodatakseVastust") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.OodatakseVastust = new global::Xtee.Core.Schema.XsdBoolean(Reader.ReadElementString("OodatakseVastust")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="Edasikaevatav") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.Edasikaevatav = new global::Xtee.Core.Schema.XsdBoolean(Reader.ReadElementString("Edasikaevatav")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
            if (Reader.LocalName=="EdasikaebamiseKP") {
                if ((Reader.IsElementNil() == false)) {
                    clazz.EdasikaebamiseKP = new global::Xtee.Core.Schema.XsdDateTime(Reader.ReadElementString("EdasikaebamiseKP")).Value;
                }
                else {
                    Reader.Skip();
                }
            }
        }
    }
}
